function getFile()
{
  //pocztek kodu z listingu 7.4
  
  $filename = $_REQUEST['filename'];
  
  //wykrycie potencjalnej prby ataku 1
  if(preg_match('/(\.\.)+|[\/\\\\]+/', $filename)){
    $this->setMessage('Brak wskazanego pliku.');
    return ACTION_FAILED;
  }
  
  $realfullpath = realpath($this->filespath.$filename);
  
  //wykrycie potencjalnej prby ataku 2
  if($realfullpath != realpath($this->filespath).DIRECTORY_SEPARATOR.$filename){
    $this->setMessage('Brak wskaznego pliku.');
    return ACTION_FAILED;
  }
  
  //sprawdzenie czy plik istnieje
  if(!file_exists($realfullpath)){
    $this->setMessage('Brak wskazanego pliku.');
    return ACTION_FAILED;
  }
  
  //wysanie pliku
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='.$filename);
  header('Content-Length: ' . filesize($realfullpath));
  readfile($realfullpath);
}
